public class AddTwoNumbers {

     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
          ListNode newNode = new ListNode();
          ListNode dummy = newNode;
          while (l1 != null && l2 != null) {
               ListNode listNode = new ListNode(l1.val + l2.val);
               newNode.next = listNode;
               newNode = newNode.next;
               l1 = l1.next;
               l2 = l2.next;
          }
          newNode.next = l1 == null ? l2 : l1;
          ListNode temp = dummy.next;
          while (temp.next != null) {
               temp.next.val += (temp.val / 10);
               temp.val = temp.val % 10;
               temp = temp.next;
          }
          if (temp.val > 9) {
               temp.next = new ListNode();
               temp.next.val = temp.val / 10;
               temp.val = temp.val % 10;
          }
          return dummy.next;
     }
}

